﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Vibz.TeamAssignment.Common.Entity;
using System.Windows.Forms;
using Extensil.Common;

namespace Vibz.TeamAssignment.Common
{
    public interface IAssignmentManager
    {
        void Connect();
        int CreateTask(Task task);
        int UpdateTask(Task task);
        int CreateAssignment(TaskAssignment assignment);
        int UpdateAssignment(TaskAssignment assignment);
        Task GetTask(int taskID);
        Task GetTask(string taskName);
        List<string> GetAssignStatusList();
        List<TeamMember> GetAllTeamMember();
        List<TaskGroup> GetAllTaskGroup();
        List<TaskGroupOwner> GetAllTaskGroupOwner();
        List<TaskView> GetUsersTask(string userId);
        List<TaskView> GetImmediateSubTask(int taskId);
        List<Task> GetAllSubTask(int taskId);
        TaskAssignment GetLatestAssignment(int taskID);
        List<TaskAssignment> GetAllAssignments(int taskID);
        List<TaskGroup> GetUsersTaskGroup(string userID);
        List<string> GetAllMembers();
        List<string> GetAsignee(string userID);
        List<string> GetNonAsignee(string userID);
        List<TaskMasterEntry> GetAllConfig();
        string GetConfig(string key);
        string GetGroupName(int groupId);
        bool IsUserAdmin(string userID);
        int QueryInterval
        {
            get;
        }
        Form GetSettingForm(BaseCategory category);
        void AddCustomTaskGroup(int id, string name);
        int AddTeamMember(string userId, string managerId);
        int UpdateTaskMaster(string key, string value);
        int AddTaskGroup(string title);
        int AddTaskGroupOwner(int groupId, string userId);
        int DeleteTaskGroupOwner(int groupId, string userId);
        void ClearCache();
    }
}
